package com.cskaoyan.javase.oop3._3inner._0introduction;

/**
 * 引例：
 * 我们现在做一个应用程序，
 *      需要描述一台电脑中的CPU，对于电脑而言，该怎么去描述这个CPU呢？
 *
 * CPU很特殊：
 *      1.CPU不应该脱离计算机存在，也就是说CPU类不应该在Computer之外创建对象。
 *      2.CPU能够操控计算机内部的所有硬件资源。这意味着CPU对象应该能够访问Computer类的所有成员，无论私有非私有。
 *
 * 也就是说CPU类不应该脱离Computer类，它应该定义在Computer类的内部，这样Computer类就可以保护CPU类，阻止在外界创建它的对象。
 * 像这种能够直接定义在一个类的内部的类，称之为内部类。类可以嵌套定义。
 * 内部类的两个特点：
 *      1.定义在成员位置的内部类，具有四种访问权限，可以私有和受保护。
 *      2.内部类和装内部类的那个类，是"好兄弟"，互相访问成员，不受权限限制，即便是私有。
 *
 * 为了上课方便，我们需要统一口径，在内部类课程当中，我们统一规定：
 *
 * 1. 像CPU这种，定义在别的类的内部的类，我们称之为内部类。（inner）
 * 2. 像Computer这种，包裹内部类的，我们称之为外围类。（enclosed）
 * 3. Demo这种类我们称之为外部类。（outside）
 *
 *
 *
 * @since 16:22
 * @author wuguidong@cskaoyan.onaliyun.com
 */
public class Demo {
    public static void main(String[] args) {
        // CPU cpu = new CPU();
    }
}

class Computer {
    private CPU cpu;

    private class CPU {

    }
}

